Predictive responses to incoming communications

ABSTRACT

A computing system includes a communication unit configured to receive a plurality of message histories, at least one processor, and at least one module. The at least one module is operable by the at least one processor to: determine, based on the plurality of message histories, a plurality of message and response pairs, determine a number of instances of each response for each message from the plurality of message and response pairs, classify each response from the plurality of message and response pairs as having an information type, and store an indication of each unique message from the plurality of message and response pairs, an indication of the information type associated with the respective response associated with the unique message, and a number of responses from the plurality of message and response pairs having the information type.

RELATED APPLICATION

This application is a Continuation of U.S. application Ser. No.15/015,075, filed Feb. 3, 2016, the entire contents of which is herebyincorporated by reference.

BACKGROUND

Computing devices (e.g., mobile phones, tablet computers, etc.) mayenable a user to respond to incoming communications from one or moreother computing devices. In some cases, the incoming communications(e.g., an email, a text message, a meeting request, etc.) may includetextual information. A computing device may enable a user of thecomputing device to respond to the incoming communication by allowingthe user to input textual information (e.g., using an input device), andsend the textual information to the one or more other computing devicesas a response.

Some computing devices may enable a user to choose a response stored bythe computing device and send the chosen stored response, such as byproviding one or more options that the user may select. For example,responsive to receiving a meeting request, a computing device may enablea user of the computing device to select a response to “accept” themeeting request, “decline” the meeting request, or choose other storedoptions. However, the computing device may provide only a small numberof stored responses, thereby reducing the likelihood that the availablestored responses include a response desired by the user. Conversely, thecomputing device may provide a larger number of stored responses,thereby requiring the user to search through a number of responses,which may not be useful in the current context of the incomingcommunication.

SUMMARY

In one example, a method may include receiving, by a computing system, aplurality of message histories, wherein each message history from theplurality of message histories includes one or more of a simplemessaging service message history, multimedia messaging service messagehistory, an instant messaging message history, or an email messagehistory, determining, by the computing system and based on the pluralityof message histories, a plurality of message and response pairs,determining, by the computing system, a number of instances of eachresponse for each message from the plurality of message and responsepairs. The method may also include classifying, by the computing system,each response from the plurality of message and response pairs as havingan information type, and storing, by the computing system, an indicationof each unique message from the plurality of message and response pairs,an indication of the information type associated with the respectiveresponse associated with the unique message, and a number of responsesfrom the plurality of message and response pairs having the informationtype

In another example, a computing system includes at least onecommunication unit, a storage device, at least one processor, and atleast one module. The at least one communication unit is configured toreceive a plurality of message histories, wherein each message historyfrom the plurality of message histories includes one or more of a simplemessaging service message history, multimedia messaging service messagehistory, an instant messaging message history, or an email messagehistory. The at least one module is operable by the at least oneprocessor to determine, based on the plurality of message histories, aplurality of message and response pairs, determine a number of instancesof each response for each message from the plurality of message andresponse pairs, classify each response from the plurality of message andresponse pairs as having an information type, and store, at the storagedevice, an indication of each unique message from the plurality ofmessage and response pairs, an indication of the information typeassociated with the respective response associated with the uniquemessage, and a number of responses from the plurality of message andresponse pairs having the information type.

In another example, a computer-readable storage device is encoded withinstructions that, when executed, cause at least one processor of acomputing system to receive a plurality of message histories, whereineach message history from the plurality of message histories includesone or more of a simple messaging service message history, multimediamessaging service message history, an instant messaging message history,or an email message history, determine, based on the plurality ofmessage histories, a plurality of message and response pairs, anddetermine a number of instances of each response for each message fromthe plurality of message and response pairs. The instructions mayfurther cause the one or more processors to classify each response fromthe plurality of message and response pairs as having an informationtype, and store an indication of each unique message from the pluralityof message and response pairs, an indication of the information typeassociated with the respective response associated with the uniquemessage, and a number of responses from the plurality of message andresponse pairs having the information type.

The details of one or more examples are set forth in the accompanyingdrawings and the description below. Other features, objects, andadvantages will be apparent from the description and drawings, and fromthe claims.

BRIEF DESCRIPTION OF DRAWINGS

FIG. 1 is a conceptual diagram illustrating an example computingenvironment and graphical user interface (GUI) for providing candidateresponses to an incoming communication, in accordance with one or moreaspects of the present disclosure.

FIG. 2 is a block diagram illustrating one example of a responsesuggestion unit for providing candidate responses to an incomingcommunication, in accordance with one or more aspects of the presentdisclosure.

FIG. 3 is a conceptual diagram illustrating example data generated whileclassifying responses, in accordance with one or more aspects of thepresent disclosure.

FIG. 4 is a flow diagram illustrating an example operation for analyzingresponses to incoming communications, in accordance with one or moreaspects of the present disclosure.

FIG. 5 is a flow diagram illustrating example operations for providingcandidate responses to an incoming communication, in accordance with oneor more aspects of the present disclosure.

DETAILED DESCRIPTION

In general, techniques of this disclosure may enable a computing systemto provide a computing device with candidate responses to incomingcommunications. The candidate responses may be relevant to the incomingcommunication and/or to a current situation (e.g., a current context) ofa user of the computing device and/or of the computing device. Thecomputing system may determine which candidate responses to send to thecomputing device based at least in part on the frequency with whichusers (e.g., the user of the computing device and/or other users) havepreviously selected the responses to respond to the same or similarincoming communications. For example, a computing system may receive anincoming communication, such as an email, from a computing deviceassociated with a user. The email may include information (e.g., asender, one or more recipients, title and body text, images, emoji,audio/video data, etc.). The computing system may determine at least onecandidate response to the message by analyzing the information, identifyother incoming messages that are similar to the email, determine a typeof information that is typically included in a response to such anemail, and determine, based on the type of information, at least oneresponse to the email. The computing system may send the at least onecandidate response to the computing device, which may output the atleast one candidate response and receive an indication of a selection ofone of the candidate responses, thereby enabling the user to select aparticular candidate response and send the particular candidate responseto one or more other computing devices (e.g., as a response to theemail).

In this manner, techniques of the present disclosure may enable a userto send relevant responses to incoming communications without having tomanually enter the response. Allowing a user to select from one or morecandidate responses may be particularly helpful when it may be difficultor undesirable for the user to manually enter textual information for aresponse. Techniques of the present disclosure may enable a computingdevice to increase the user's efficiency by predicting, based on areceived incoming communication, how a user is likely to respond.Accordingly, a computing device configured in accordance with techniquesof this disclosure may reduce or remove the need for the user to spendtime manually entering information for a response to an incomingcommunication.

In general, a computing device of a user may send information (e.g.,incoming communications, location information, other contextualinformation, etc.) to the computing system only if the computing devicereceives permission from the user to send the information. For example,in situations discussed below in which the computing device may collect,transmit, or may make use of personal information about a user (e.g.,incoming communications) the user may be provided with an opportunity tocontrol whether programs or features of the computing device can collectuser information (e.g., information about a user's communications, auser's social network, a user's social actions or activities, a user'sprofession, a user's preferences, or a user's current location), or tocontrol whether and/or how the computing device may store and share userinformation.

In addition, certain data may be treated in one or more ways before itis stored, transmitted, or used by the computing device so thatpersonally identifiable information is removed. For example, a user'sidentity may be treated so that no personally identifiable informationcan be determined about the user, or a user's geographic location may begeneralized where location information is obtained (such as to a city,ZIP code, or state level), so that a particular location of the usercannot be determined. Thus, the user may have control over howinformation is collected about the user and stored, transmitted, and/orused by the computing device.

FIG. 1 is a conceptual diagram illustrating an example computingenvironment 1 and GUI 20 for providing candidate responses to anincoming communication, in accordance with one or more aspects of thepresent disclosure. As shown in the example of FIG. 1, computingenvironment 1 includes computing device 2A, network 12, and responsesuggestion system 14. Examples of computing device 2A may include, butare not limited to, portable, mobile, or other devices, such as mobilephones (including smartphones), laptop computers, desktop computers,tablet computers, smart television platforms, personal digitalassistants (PDAs), server computers, mainframes, and the like. Forinstance, in the example of FIG. 1, computing device 2A may be asmartphone.

Computing device 2A, as shown in the example of FIG. 1, includes userinterface (UI) device 4. UI device 4 of computing device 2A may beconfigured to function as an input device and/or an output device forcomputing device 2A. UI device 4 may be implemented using varioustechnologies. For instance, UI device 4 may be configured to receiveinput from a user through tactile, audio, and/or video feedback.Examples of input devices include a presence-sensitive display, apresence-sensitive or touch-sensitive input device, a mouse, a keyboard,a voice responsive system, video camera, microphone or any other type ofdevice for detecting a command from a user. In some examples, apresence-sensitive display includes a touch-sensitive orpresence-sensitive input screen, such as a resistive touchscreen, asurface acoustic wave touchscreen, a capacitive touchscreen, aprojective capacitance touchscreen, a pressure sensitive screen, anacoustic pulse recognition touchscreen, or another presence-sensitivetechnology. That is, UI device 4 of computing device 2A may include apresence-sensitive device that may receive tactile input from a user ofcomputing device 2A. UI device 4 may receive indications of the tactileinput by detecting one or more gestures from the user (e.g., when theuser touches or points to one or more locations of UI device 4 with afinger or a stylus pen).

UI device 4 may additionally or alternatively be configured to functionas an output device by providing output to a user using tactile, audio,or video stimuli. Examples of output devices include a sound card, avideo graphics adapter card, or any of one or more display devices, suchas a liquid crystal display (LCD), dot matrix display, light emittingdiode (LED) display, organic light-emitting diode (OLED) display, e-ink,or similar monochrome or color display capable of outputting visibleinformation to a user of computing device 2A. Additional examples of anoutput device include a speaker, a cathode ray tube (CRT) monitor, aliquid crystal display (LCD), or other device that can generateintelligible output to a user. For instance, UI device 4 may presentoutput to a user of computing device 2A as a graphical user interfacethat may be associated with functionality provided by computing device2A. In this way, UI device 4 may present various user interfaces ofapplications executing at or accessible by computing device 2A (e.g., anelectronic message application, an Internet browser application, etc.).A user of computing device 2A may interact with a respective userinterface of an application to cause computing device 2A to performoperations relating to a function.

In some examples, UI device 4 of computing device 2A may detecttwo-dimensional and/or three-dimensional gestures as input from a userof computing device 2A. For instance, a sensor of UI device 4 may detectthe user's movement (e.g., moving a hand, an arm, a pen, a stylus, etc.)within a threshold distance of the sensor of UI device 4. UI device 4may determine a two or three dimensional vector representation of themovement and correlate the vector representation to a gesture input(e.g., a hand-wave, a pinch, a clap, a pen stroke, etc.) that hasmultiple dimensions. In other words, UI device 4 may, in some examples,detect a multi-dimension gesture without requiring the user to gestureat or near a screen or surface at which UI device 4 outputs informationfor display. Instead, UI device 4 may detect a multi-dimensional gestureperformed at or near a sensor which may or may not be located near thescreen or surface at which UI device 4 outputs information for display.

In the example of FIG. 1, computing device 2A includes user interface(UI) module 6, device location module 8, and application modules 10A-10N(collectively “application modules 10”). Modules 6, 8, and/or 10 mayperform operations described herein using hardware, software, firmware,or a mixture thereof residing in and/or executing at computing device2A. Computing device 2A may execute modules 6, 8, and/or 10 with oneprocessor or with multiple processors. In some examples, computingdevice 2A may execute modules 6, 8, and/or 10 as a virtual machineexecuting on underlying hardware. Modules 6, 8, and/or 10 may execute asone or more services of an operating system or computing platform or mayexecute as one or more executable programs at an application layer of acomputing platform.

UI module 6, as shown in the example of FIG. 1, may be operable bycomputing device 2A to perform one or more functions, such as receiveinput and send indications of such input to other components associatedwith computing device 2A, such as application modules 10. UI module 6may also receive data from components associated with computing device2A such as device location module 8 or application modules 10. Using thedata received, UI module 6 may cause other components associated withcomputing device 2A, such as UI device 4, to provide output based on thedata. For instance, UI module 6 may receive data from one of applicationmodules 10 to display a GUI.

Application modules 10, as shown in the example of FIG. 1, may includefunctionality to perform any variety of operations on computing device2A. For instance, application modules 10 may include a word processor,an email application, a web browser, a multimedia player, a calendarapplication, an operating system, a distributed computing application, agraphic design application, a video editing application, a webdevelopment application, or any other application. One of applicationmodules 10 (e.g., application module 10A) may be a text messaging orShort Message Service (SMS) application. Application module 10A mayinclude functionality to compose outgoing text message communications,receive incoming text message communications, respond to incoming textmessage communications, and other functions. Application module 10A, invarious examples, may provide data to UI module 6 causing UI device 4 todisplay a GUI.

In some examples, one or more of application modules 10 may be operableto receive incoming communications from other devices (e.g., via network12). For instance, one or more of application modules 10 may receiveemail messages for an account associated with a user of computing device2A, calendar alerts or meeting requests for a user of computing device2A, or other incoming communications.

Incoming communications may include information (e.g., generated inresponse to input by users of the other devices). Examples ofinformation include text (e.g., any combination of letters, words,numbers, punctuation, etc.), emoji, images, video, audio, or any othercontent that may be included in an incoming communication. In theexample of FIG. 1, application module 10A may receive an incomingcommunication (e.g., a text message) from another computing device (notshown). The received text message may include the information “Are youcoming to the pub?”

In some examples, UI device 4 may detect input corresponding to a user'sselection of an option to respond to an incoming communication. UImodule 6 may receive an indication of the input and provide data to oneor more of application modules 10 based on the indication. In someexamples, responsive to receiving the data, the receiving one ofapplications 10 may generate a request for candidate responses to theincoming communication. For instance, in the example of FIG. 1,application 10A may generate a request for candidate responses to thetext message. The request may include an indication of at least part ofthe information included in the text message. In some examples, therequest may include other information, such as location information,user information, or other information about computing device 2A or auser of computing device 2A. Application 10A may only generate therequest and/or obtain personal data (e.g., information included in thetext message and/or other information) if the user of computing device2A provides explicit permission. After receiving the explicitpermission, computing device 2A may transmit the request via network 12(e.g., to response suggestion system 14).

Network 12 represents any public or private communication network, suchas a cellular network, Wi-Fi network, or other type of network fortransmitting data between computing devices. In some examples, network12 may represent one or more packet switched networks, such as theInternet. Computing device 2A and response suggestion system 14 may sendand receive data across network 12 using any suitable communicationtechniques. For example, computing device 2A and response suggestionsystem 14 may each be operatively coupled to network 12 using respectivenetwork links. Network 12 may include network hubs, network switches,network routers, etc., that are operatively inter-coupled therebyproviding for the exchange of information between computing device 2Aand response suggestion system 14. In some examples, network links ofnetwork 12 may be Ethernet, ATM or other network connections. Suchconnections may include wireless and/or wired connections. Network 12may receive the request from computing device 2A and provide the requestto response suggestion system 14.

Response suggestion system 14 may represent any suitable remotecomputing system, such as one or more desktop computers, laptopcomputers, mainframes, servers, cloud computing systems, etc. capable ofsending and receiving information via network 12. In some examples,response suggestion system 14 may represent a cloud computing systemthat provides one or more services via network 12. That is, in someexamples, response suggestion system 14 may be a distributed computingsystem. One or more computing devices, such as computing device 2A, mayaccess the services provided by the cloud by communicating with responsesuggestion system 14. While described herein as being performed at leastin part by response suggestion system 14, any or all techniques of thepresent disclosure may be performed by one or more other devices, suchas computing device 2A. That is, in some examples, computing device 2Amay be operable to perform one or more techniques of the presentdisclosure alone.

In the example of FIG. 1, response suggestion system 14 includessuggestion module 18. Suggestion module 18 may be operable to determineat least one candidate response to an incoming communication based atleast in part on information included in the incoming communication.Each candidate response may be a predicted message that a user maychoose to send in response to an incoming communication. For instance,in the example of FIG. 1, each candidate response determined bysuggestion module 18 may be a prediction of a message that the user ofcomputing device 2A may send in order to respond to the text message,“Are you coming to the pub?”

Suggestion module 18 may determine candidate responses from responsespreviously selected by one or more users (e.g., the user of computingdevice 2A and/or other users). That is, response suggestion system 14may receive information, such as message histories, from various sources(e.g., computing device 2A and/or computing devices associated withother users) indicating incoming communications and the responses thatusers have selected as responses to the incoming communications. Thatis, response suggestion system 14 may receive a plurality of messagehistories associated with different users and that include message andresponse pairs. The message histories may be one or more of a simplemessaging service message history, multimedia messaging service messagehistory, an instant messaging message history, or an email messagehistory.

In some examples, text analysis module 16 of response suggestion system14 may classify each response in the message histories as having one ofa set of information types. For example, the responses to “when worksfor you?” may include “6 pm,” “in 10 minutes,” “now,” etc. Based onthose responses, text analysis module 16 may classify responses to “whenworks for you” as having the information type “TIME.” Similarly, textanalysis module 16 may analyze the responses to “LG™,” which may include“thank you,” “great!,” “whew,” etc. and determine that the responseshave the information type “TEXT.” As yet another example, the responsesto “how many would you like?” may include “1,” “2,” “a few,” “several,”etc. Based on those responses, text analysis module 16 may classifyresponses to “how many would you like” as having the information type“NUMBER.”

By analyzing the incoming communications and the corresponding selectedresponses (e.g., chat logs), text analysis module 16 and suggestionmodule 18 (or other components of response suggestion system 14) maydetermine likely replies to messages. That is, text analysis module 16and suggestion module 18 may generate a mapping of a part of aconversation to a particular response based on prior conversations. Forinstance, text analysis module 16 may receive a request including theinformation, “Are you coming?” Text analysis module 16 may analyze therequest, determine a likely response includes textual information, andsuggestion module 18 may determine that the most common replies to therequest include “I'll be right there,” “yes,” and “no.”

In some examples, the information included in the incoming communicationand/or the candidate responses need not be proper language. Forinstance, response suggestions system 14 may receive a request todetermine candidate responses for the text, “<3” (e.g., a heartemoticon). Text analysis module 16 may determine that such a messageshould have a response type of EMOTICON and, based on that, suggestionmodule 18 may determine that the most common responses are “<3”, and“:)” (e.g., a smiley emoticon). In some examples, candidate responsesmay be responses that have been selected at least at a thresholdfrequency by the one or more users. In other examples, candidateresponses may be based additionally or instead on manual review bydevelopers or administrators of response suggestion system 14. Manualreview may be beneficial, for example, to ensure candidate responses areappropriate.

In some examples, suggestion module 18 may determine candidate responsesbased at least in part on an identity of the user of computing device 2Aand/or information about the user of computing device 2A. Suggestionmodule 18 (or other components of response suggestion system 14) mayreceive a request from computing device 2A that includes an indicationof a particular incoming communication as well as an indication of theidentity of the recipient of the incoming communication. Suggestionmodule 18 may provide personalized candidate responses based on theidentity of the recipient. In another example, suggestion module 18 mayreceive explicit permission from a user (e.g., the user of computingdevice 2A) to access communications information, social media networkinformation, or other information pertaining to the user. For example,if the expected response type is ADDRESS, suggestion module 18 mayinclude a home address, work address, or other address associated withthe user.

Response suggestion system 14 may send one or more of the candidateresponses to computing device 2A. One of applications 10 may receive anindication of the determined candidate responses, and send data to UImodule 6 to cause UI device 4 to display the candidate responses. Forinstance, in the example of FIG. 1, application 10A may receivecandidate responses to the text message, as determined by suggestionmodule 18 of response suggestion system 14. Responsive to receiving theindication of the candidate responses, application 10A may send data toUI module 6 to cause UI device 4 to display the candidate responses aspart of GUI 20.

As shown in the example of FIG. 1, GUI 20 includes response selectionarea 22. Response selection area 22 may be displayed in response tocomputing device 2A receiving input corresponding to a command torespond to the incoming communication. Response selection area 22includes response options 24A-24D (collectively “response options 24”).In some examples, response options 24 may represent candidate responsesreceived from response suggestion system 14. In other examples, responseselection area 22 may represent other response options, such asresponses previously entered by the user of computing device 2A tosimilar incoming communications. In some examples, the candidateresponses received by computing device 2A may be modified (e.g., by areceiving one of applications 10) based on various types of information,and response selection area 22 may contain one or more response optionsrepresenting modified candidate responses. In any case, responseselection area 22 of GUI 20 may enable the user of computing device 2Ato select one of response options 24, such as response option 24Aincluding the displayed text “I'll be there in 15 minutes,” responseoption 24B including the displayed text “I'm on my way,” or otherresponse options.

Inputting and selecting a custom response or selection of one ofresponse options 24 may cause computing device 2A to respond to theincoming communication by sending the the selected response to one ormore other computing devices. The selected response (e.g., the one ofresponse options 24 selected by the user) may be sent to a computingdevice from which the incoming communication was received. In someexamples, the selected response may be sent to additional or othercomputing devices. By enabling computing device 2A to obtain candidateresponses and display response options 24, response suggestion system 14may reduce the amount of time required for a user of computing device 2Ato input and send a response to an incoming communication. For instance,wearable computing devices, such as watches or other devices, may beable to display several candidate responses to a user that are based ona received incoming communication, thereby enabling the user to quicklytap or otherwise select one of the candidate responses instead of havingto use voice recognition or other means to input a response.

FIG. 2 is a block diagram illustrating one example of responsesuggestion system 14, shown in FIG. 1, for providing candidate responsesto an incoming communication, in accordance with one or more aspects ofthe present disclosure. Response suggestion system 14 may includehardware, firmware, software, or any combination thereof. In the exampleof FIG. 2, response suggestion system 14 may comprise a hardware device,such as a server computer, having various hardware, firmware, andsoftware components. However, FIG. 2 illustrates only one particularexample of response suggestion system 14, and many other examples ofresponse suggestion system 14 may be used in accordance with techniquesof the present disclosure. In some examples, components of responsesuggestion system 14 may be located in a singular location. In otherexamples, one or more components of response suggestion system 14 may bein different locations (e.g., connected via network 12 of FIG. 1). Thatis, in some examples response suggestion system 14 may be a conventionalcomputing system, while in other examples, response suggestion system 14may be a distributed or “cloud” computing system.

As shown in the specific example of FIG. 2, response suggestion system14 includes one or more processors 40, one or more communications units42, and one or more storage devices 44. Response suggestion system 14further includes operating system 48, text analysis module 16,suggestion module 18, and response data store 50. In other examples,response data store 50 may not be included in response suggestion system14 and may, for example, be stored at a different computing systemoperatively and/or communicatively coupled to response suggestion system14. That is, in some examples, response data store 50 may be externalto, but accessible by, response suggestion system 14.

Each of components 40, 42, and 44 may be interconnected (physically,communicatively, and/or operatively) for inter-component communications.In the example of FIG. 2, components 40, 42, and 44 may be coupled byone or more communications channels (COMM. CHANNELS) 46. In someexamples, communications channels 46 may include a system bus, networkconnection, inter-process communication data structure, or any otherchannel for communicating data. In other examples, such as whereresponse suggestion system 14 is a distributed computing system orcloud-based computing system, communications channels 46 may include oneor more network connections, such as portions of network 12 of FIG. 1.Modules 16, 50, and 52, as well as operating system 48, and responsedata store 50 may also communicate information with one another as wellas with other components in response suggestion system 14.

Processors 40, in one example, are configured to implement functionalityand/or process instructions for execution within response suggestionsystem 14. For example, processors 40 may be capable of processinginstructions stored in storage devices 44. Examples of processors 40 mayinclude, any one or more of a microprocessor, a controller, a digitalsignal processor (DSP), an application specific integrated circuit(ASIC), a field-programmable gate array (FPGA), or equivalent discreteor integrated logic circuitry, including other hardware processors.

Response suggestion system 14, in the example of FIG. 2, also includesone or more communication units 42. Response suggestion system 14, inone example, utilizes communication units 42 to communicate withexternal devices via one or more networks, such as network 12 of FIG. 1.Communication units 42 may include a network interface card, such as anEthernet card, an optical transceiver, a radio frequency transceiver, orany other type of device that can send and receive information. Otherexamples of such network interfaces may include Bluetooth, 3G and WiFiradio components as well as Universal Serial Bus (USB). In someexamples, response suggestion system 14 utilizes communication units 42to wirelessly communicate with one or more external devices such ascomputing device 2A of FIG. 1. For instance, communication units 42 mayreceive a request for candidate responses from computing device 2A, andprovide the request to one or more other components of responsesuggestion system 14 (e.g., modules 16, 18).

One or more storage devices 44 may be configured to store informationwithin response suggestion system 14 during operation. Storage devices44, in some examples, can be described as a computer-readable storagemedium. In some examples, storage devices 44 are a temporary memory,meaning that a primary purpose of storage devices 44 is not long-termstorage. Storage devices 44, in some examples, are described as avolatile memory, meaning that storage devices 44 do not maintain storedcontents when the computer is turned off. Examples of volatile memoriesinclude random access memories (RAM), dynamic random access memories(DRAM), static random access memories (SRAM), and other forms ofvolatile memories known in the art. In some examples, storage devices 44are used to store program instructions for execution by processors 40.Storage devices 44, in one example, are used by software or applicationsrunning on response suggestion system 14 (e.g., modules 16, 50, and 52)to temporarily store information during program execution.

Storage devices 44, in some examples, also include one or morecomputer-readable storage media. Storage devices 44 may be configured tostore larger amounts of information than volatile memory. Storagedevices 44 may further be configured for long-term storage ofinformation. In some examples, storage devices 44 include non-volatilestorage elements. Examples of such non-volatile storage elements includemagnetic hard discs, optical discs, floppy discs, flash memories, orforms of electrically programmable memories (EPROM) or electricallyerasable and programmable memories (EEPROM).

In some examples, response suggestion system 14 may contain more orfewer components. For instance, response suggestion system 14 maycontain one or more input devices, such as devices configured to receiveinput from a user or administrator through tactical, audio, or videofeedback, and/or one or more output devices, such as devices configuredto provide output to a user or administrator using tactile, audio, orvideo stimuli.

In the example of FIG. 2, response suggestion system 14 includesoperating system 48. Operating system 48, in some examples, controls theoperation of components of response suggestion system 14. For example,operating system 48, in one example, facilitates the communication ofmodules 16 and 18 with processors 40, communication units 42, andstorage devices 44. Modules 16 and 18 may each include programinstructions and/or data that are executable by response suggestionsystem 14. As one example, text analysis module 16 and suggestion module18 may include instructions that cause response suggestion system 14 toperform one or more of the operations and actions described in thepresent disclosure.

Response suggestion system 14 may receive one or more message historiesfrom a plurality of different computing devices (e.g., computing devices2 of FIG. 1). The message histories may be one or more of a simplemessaging service message history, multimedia messaging service messagehistory, an instant messaging message history, or an email messagehistory. Text analysis module 16 may analyze the message histories andgenerate a set of popular response types and responses based on themessage histories. For example, text analysis module 16 may create atable of responses that includes information about message and responsepairs. That is, the table may include information about the receivedmessage, such as the text of the received message, and information aboutthe reply, such as the text of the reply message. In various examples,the table includes additional information about the message/responsepair, such as a type of the message and a type of the response. Themessage/response table may be stored, in various instances, withinresponse data store 50. While described as a table, the message andresponse information may be stored within data store 50 using a range ofone or more data structures, such as an array, a list, a database, astructured file (such as a file encoded using a markup language) orother data structure. That is, response data store 50 may contain datain any format capable of being created and/or accessed by one or moreother components of response suggestion system 14.

In some examples, response data store 50 may include informationreceived from users and/or information provided by managers oradministrators of response suggestion system 14. For instance, responsedata store 50 may receive instructions from one or more modules ofresponse suggestion system 14 (e.g., aggregation module 52,categorization module 54, etc.) to create or modify data within responsedata store 50. In some examples, response data store 50 may requireadministrator approval before storing or modifying information.Requiring administrator approval before storing or modifying informationmay help to ensure that erroneous or inappropriate responses are notstored and thus not suggested as subsequent candidate responses. Inother examples, response data store 50 may automatically storeinformation as instructed by aggregation module 52 and/or categorizationmodule 54, such as when other management procedures are used.

Aggregation module 52 may analyze the message histories and store themessage and response information within response data store 50. Forexample, aggregation module 52 may process each message history from theone or more message histories and break the message history down intoindividual message and response pairs. Each message history may includetime information, sender information, and contents information for eachmessage included in the message history. Aggregation module 52 iteratesover each message and each message history. For each message,aggregation module 52 determines a message (e.g., message N) thatimmediately precedes another message (e.g., message M) in the messagehistory. In this example, message N is the message having the greatesttimestamp that is less than the timestamp of message M. Aggregationmodule 52 analyzes the senders for message N and message M. If thesenders of message N and M are different, aggregation module 52normalizes the contents of message N and the content of message M andinserts at least the normalized contents of messages N and M into themessage/response table. In normalizing the content, aggregation module52 may change the contents of the messages N and M to be consistentcases (e.g., all lowercase, all uppercase, etc.), may remove allpunctuation, correct any misspellings, etc.

In some examples, the message and response pairs may include more thanone message and/or more than one response in instances where aggregationmodule 52 determines that multiple different messages are associatedwith a single response or multiple different responses are associatedwith a single message. For example, aggregation module 52 may determinethat the message “what time?” immediately followed by the message “doyou want to meet?” should be considered a single message for purposes ofprocessing the message history. As another example, aggregation module52 may determine that the response “5 pm” immediately followed by themessage “tomorrow” should be considered a single response for purposesof processing the message history. Aggregation module 52 may determinethat the two messages/responses should be analyzed as a singlemessage/response based on various factors including text proximity(i.e., does message B immediately follow message A or is there anintervening message or response?) and time proximity (i.e., did the usersend message B within a threshold amount of time of sending message A,such as 1 second, 3 seconds,5 seconds, etc.) Thus, even though a usermay have entered two messages—“what time?” and “do you want tomeet?”—and the recipient entered two responses—“5 pm” and“tomorrow’—aggregation module 52 may determine that the messages andresponses should be analyzed as a single message and a single response.

After aggregation module 52 has stored information for at least onemessage and response pair in the message and response table, aggregationmodule 52 may begin aggregating the responses for each message based onthe normalized contents of the responses. That is, for a particularmessage, aggregation module 52 may identify responses having the samenormalized contents (e.g., two responses having the contents “6 pm”would be identified as having the same normalized contents), counts thenumber of responses having the same normalized responses for aparticular message, and stores the count in a row for the particularmessage and response pair. In other words, aggregation module 52 ofresponse suggestion system 14 determines a number of instances of eachresponse for each message from the plurality of message and responsepairs. As stated differently, aggregation module 52 consolidates theentries in the message and response table such that there is a singlerow for each unique response for a particular message and the row forthe unique message and response pair includes a count of the number oftimes the particular response was used for the particular message.

Categorization module 54 may categorize the information included in themessages and responses as having a particular information type. That is,categorization module 54 may apply one or more classifiers to theresponses in the message and response table to classify the responses ashaving an information type. Example classifiers include, but are notlimited to, an address classifier, a chain store classifier, an emojiclassifier, a celebrity classifier, a date classifier, a day of weekclassifier, a time classifier, etc. In general, the classifiers may berules configured to detect a particular type of information. Theclassifiers may be for any type of information and are not limited tothe few examples provided.

Categorization module 54 may apply a time classifier to the responses to“when works for you?”. The responses may include “6 pm,” “in 10minutes,” “now,” etc. Based on those responses and using the timeclassifier, categorization module 54 may classify the responses to “whenworks for you” as having the information type “TIME.” Similarly,categorization module 54 may analyze the responses to “LG™,” which mayinclude “thank you,” “great!,” “whew,” etc. and determine that theresponses have the information type “UNKNOWN” as none of the classifiersmay be appropriate. As yet another example, the responses to “how manywould you like?” may include “1,” “2,” “a few,” “several,” etc. Based onthose responses, text analysis module 16 may classify responses to “howmany would you like” as having the information type “QUANTITY” by, forexample, applying a quantity classifier.

In some examples, categorization module 54 may apply an addressclassifier, which can detect that “123 Main St” is an address but“hello” is not. As another example, categorization module 54 may apply achain classifier, which can detect that MegaChainStore andOtherChainStore are chain stores, but that “thank you” is not a chainstore. Categorization module 54 may apply an emoji classifier, which candetect that “;)” and “:-)” are emoji but “!” is not an emoji. Thecelebrity classifier may detect that “Barack Obama” and “Taylor Swift”are celebrities but “Joe” is not a celebrity. Similarly, a timeclassifier may detect that “6 pm” and “18:00” are times but “tomorrow”is not a time, while a date classifier may detect that “tomorrow” and“July 4th” are dates but “July” is not a date. As another example, a dayof week classifier may detect that “Sunday” and Monday” are days of theweek but “Labor Day” is not a day of the week. Thus, in general,categorization module 54 may apply one or more classifiers to thenormalized response contents to classify the responses as having one ormore different information types.

Categorization module 54 may then invoke aggregation module 52 tofurther aggregation the responses based on the information type for eachnormalized response. For example, aggregation module 52 may, for aparticular message, count a number of responses having each informationtype (e.g., ADDRESS, TIME, EMOJI, CELEBRITY, UNKNOWN, etc.). Aggregationmodule 52 stores the total number of responses for each information typewithin the message and response table. That is, after text analysismodule 16 analyzes the message histories, text analysis module 16 ofresponse suggestion system 14 stores an indication of each uniquemessage from the plurality of message and response pairs, an indicationof the information type associated with the respective responseassociated with the unique message, and a number of responses from theplurality of message and response pairs having the information type. Insome examples, text analysis module 16 may generate a list of the mostcommon responses to each message, which may be quickly accessed whenresponse suggestion system 14 receives a request for suggested responsesto a particular incoming communication.

Using the message and response table, suggestion module 18 may determineone or more candidate responses for incoming communications. As shown inFIG. 2, suggestion module 18 includes response type prediction module56, response generation module 58, and response personalization module60. Suggestion module 18 may receive a request for a candidate responsefrom one or more remote computing devices, such as computing device 2Aof FIG. 1. The request may include at least a portion of the contents ofthe incoming communication. However, the request for candidate responsesmay, in some examples, include other information. The other informationmay include information pertaining to the computing device that sent therequest and/or information pertaining to a user of the computing devicethat sent the request. For instance, a request may include a uniqueidentifier (e.g., an ID number) identifying the user and/or thecomputing device that sent the request, location information indicatingone or more locations of the computing device, time informationindicating a time and/or time zone setting of the computing device,application information indicating an application currently beingexecuted by the computing device and/or an activity in which theapplication currently being executed is engaging, communicationsinformation indicating the type of the incoming communication (e.g.,email, text message, calendar alert, or other type), the type ofresponse that the computing device will be sending, the time at whichthe incoming communication was received, previous communications to orfrom the sender, user information indicating an occupation of the user,an activity in which the user is currently engaged, contact informationindicating the sender of the incoming communication, one or morerecipients of the response that the computing device will be sending, orother information. That is, the request for candidate responses mayinclude any information usable by one or more components of responsesuggestion system 14 to determine a current context of the computingdevice and tailor candidate responses to better predict a response tothe incoming communication. Communications unit 42 of responsesuggestion system 14 may receive the request for candidate responses andsend the request to one or more other components of response suggestionsystem 14, such as suggestion module 18.

In the example of FIG. 2, suggestion module 18 may be operable byprocessors 40 to receive a request for candidate responses, obtaininformation from one or more other sources, and/or determine a currentcontext for the request. That is, in some examples, suggestion module 18may obtain information included in a received incoming communication andother information (e.g., from the request for candidate responses orother sources) and determine a context on which to base predictedreplies to the incoming communication. In some examples, suggestionmodule 18 may determine a context based on the information included inthe request for candidate responses. In other examples, suggestionmodule 18 may additionally or alternatively obtain supplementalinformation from other sources, such as an email account associated witha user of the computing device that sent the request, a socialnetworking account of the user, web search history associated with theuser, a location history associated with the user, or other sources.

Suggestion module 18 may only obtain supplemental information for a userif the user provides explicit permission. That is, suggestion module 18may only use various sources of information for predicting candidateresponses if a user of the computing device that sent the request (e.g.,computing device 2) explicitly allows response suggestion system 14 toaccess the various sources. For instance, computing device 2A may promptthe user to provide a username and password for an email account, asocial network service account, or other account. After receiving theinformation, computing device 2A may prompt the user to allow responsesuggestion system 14 to access the account to obtain supplementalinformation. If the user explicitly agrees to allow access, computingdevice 2A may send an indication of the account and access credentials(e.g., a username and password or other information) to responsesuggestion system 14. If response suggestion system 14 receives explicitpermission, suggestion module 18 may obtain supplemental information.

Suggestion module 18 analyzes the request for candidate responses andextracts the included contents of the incoming communication to whichcomputing device 2A is requesting candidate responses. Response typeprediction module 56 may determine which types of responses are popularfor responding to a message with the contents of the incomingcommunication. For example, response type prediction module 56 mayperform a lookup in response data store 50 based on at least a portionof the contents of the incoming communication to retrieve information onone or more popular types of responses. As one example, if the incomingcommunication includes the contents “how are you doing?”, a popularresponse type may be “EMOJI” or “UNKNOWN.” A type of response may be apopular type of response if, for example, a percentage of all replies toincoming communications having the same contents exceeds a thresholdpopularity value (e.g., greater than fifteen percent, twenty-fivepercent, fifty percent, etc.). The lookup performed by response typeprediction module 56 on response data store 50 returns each type ofresponse that satisfies the threshold popularity value. In someexamples, none of the response types may be popular enough to satisfythe threshold popularity value. In such instances, response typeprediction module 56 may retrieve a certain number of the most popularresponse types, such as three, five, etc.

Response generation module 58 may generate a plurality of possibleresponses to send to computing device 2A by, for example, retrievingpopular responses having one or more of the types determined by responsetype prediction module 56. For example, if the incoming communicationincludes the contents “how are you doing?”, the popular responses ofresponse type EMOJI may include a thumbs up emoji, a thumbs down emoji,a happy face emoji, or other emoji.

For certain response types, response personalization module 60 maycustomize the possible candidate responses. As one example, if theincoming communication includes the content “where do you live?”,response type prediction module 56 may determine that the predictedresponse type is ADDRESS and response generation module 58 may determinethat the content of the incoming communication indicates that theresponse should include an address of the user to whom the incomingcommunication is directed. Response personalization module 60 maydetermine the home address of the user and populate a candidate responsewith the home address. As another example, if the incoming communicationincludes the contents “what time can I call you?”, the predictedresponse type may be TIME and response generation module 58 maydetermine a list of the most common times included in responses.However, the most popular times may not be times at which the user isavailable. Instead of merely providing the most popular times, responsepersonalization module 60 may analyze a calendar of the user,messaging/phone usage habits of the user, sleeping habits of the user,etc. and determine one or more at which the user is predicted to beavailable and include those times as possible candidate responses.

In some examples, response personalization module 60 may also customizethe suggested candidate responses based on other factors, such as thetype of the incoming communication (e.g., email, SMS, asynchronous,synchronous, long form, short form, etc.), the type of device thatreceived the incoming communication (e.g., smartphone, watch, portablecomputer, etc.), etc. Personalization module 60 may also maintain ahistory of candidate responses selected by the user (i.e., candidateresponses used by the user to reply to incoming communications) and maypersonalize the candidate responses based on the responses selected bythe user.

Suggestion module 18 sends the list of candidate responses to computingdevice 2A via communication units 42. Computing device 2A may displaythe list of suggested responses and detect a user input selecting one ormore of the candidate responses or inputting a different response to theincoming communication. Computing device 2A may provide an indication ofthe user input to response suggestion system 14 for inclusion in thecandidate response history for the user and for analysis by textanalysis module 16 and inclusion in response data store 50. In this way,the candidate response types and suggested candidate responses may becontinually updated and improved based how various users actuallyrespond to incoming communications.

By determining the various types of responses actually used by varioususers and further determining popular responses of the particular types,response suggestion system 14 may decrease the time and/or effortrequired to respond to incoming communications while increasing thelikelihood that the candidate responses will actually be of interest tothe user. Furthermore, by receiving an indication of a selected responseand updating a database of stored responses and associated contextinformation, response suggestion system 14 may continually improve thesuggested candidate responses, which may result in candidate responsesthat are more likely to be relevant to a user's current situation.Consequently, in accordance with one or more techniques of the presentdisclosure, the user may be presented with at least one response optionthat he or she may select to send as a response to an incomingcommunication thereby reducing the likelihood that the user will need tomanually enter a response.

FIG. 3 is a conceptual diagram illustrating example data generated whileclassifying responses, in accordance with one or more aspects of thepresent disclosure. The example of FIG. 3 is described below within thecontext of FIG. 2.

Text analysis module 16 may analyze the message histories received byresponse suggestion system 14 and generate a set of popular responsetypes and responses based on the message histories. For example, textanalysis module 16 may create a table of responses that includesinformation about message and response pairs. That is, the table mayinclude information about the received message, such as the text of thereceived message, and information about the reply, such as the text ofthe reply message. Tables 70-76 of FIG. 4 illustrate various tables thatmay be stored within response data store 50 and that may be generatedand/or modified by text analysis module 16 while generating the set ofpopular response types and responses.

In various examples, tables 70-76 may include additional informationabout the message/response pair, such as a type of the message and atype of the response. The message/response table may be stored, invarious instances, within response data store 50. While described as atable, the message and response information may be stored within datastore 50 using a range of one or more data structures, such as an array,a list, a database, a structured file (such as a file encoded using amarkup language) or other data structure. That is, response data store50 may contain data in any format capable of being created and/oraccessed by one or more other components of response suggestion system14.

Aggregation module 52 may analyze the message histories and store themessage and response information within table 70. For example,aggregation module 52 may process each message history from the one ormore message histories and break the message history down intoindividual message and response pairs, each of which may be stored in aseparate row of table 70. For example, the first row of table 70 storesthe message and response pair “are you coming” and “on my way”.Aggregation module 52 iterates over each message and each messagehistory, normalizes the messages and responses, and inserts them intoresponse data store 50.

After aggregation module 52 has stored information for at least onemessage and response pair in the message and response table (e.g., table70), aggregation module 52 may begin aggregating the responses for eachmessage based on the normalized contents of the responses and store theaggregated responses in table 72. That is, for a particular message,aggregation module 52 may identify responses having the same normalizedcontents (e.g., two responses having the contents “6 pm” would beidentified as having the same normalized contents), counts the number ofresponses having the same normalized responses for a particular message,and stores the count in a row for the particular message and responsepair, as shown in table 72. As stated differently, aggregation module 52consolidates the entries in the message and response table such thatthere is a single row for each unique response for a particular messageand the row for the unique message and response pair includes a count ofthe number of times the particular response was used for the particularmessage.

Categorization module 54 may categorize the information included in themessages and responses as having a particular information type and storethe message and response type in addition to the number of responsehaving that particular response type within table 74. That is,categorization module 54 may apply one or more classifiers to theresponses in the message and response table to classify the responses ashaving an information type. Example classifiers include, but are notlimited to, an address classifier, a chain store classifier, an emojiclassifier, a celebrity classifier, a date classifier, a day of weekclassifier, a time classifier, etc. In general, the classifiers may berules configured to detect a particular type of information. Theclassifiers may be for any type of information and are not limited tothe few examples provided.

Categorization module 54 may then invoke aggregation module 52 tofurther aggregation the responses based on the information type for eachnormalized response. For example, aggregation module 52 may, for aparticular message, count a number of responses having each informationtype (e.g., ADDRESS, TIME, EMOJI, CELEBRITY, UNKNOWN, etc.). Aggregationmodule 52 stores the total number of responses for each information typewithin message and response table 76. That is, after text analysismodule 16 analyzes the message histories, text analysis module 16 ofresponse suggestion system 14 stores an indication of each uniquemessage from the plurality of message and response pairs, an indicationof the information type associated with the respective responseassociated with the unique message, and a number of responses from theplurality of message and response pairs having the information type. Insome examples, text analysis module 16 may generate a list of the mostcommon responses to each message, which may be quickly accessed whenresponse suggestion system 14 receives a request for suggested responsesto a particular incoming communication.

FIG. 4 is a flow diagram illustrating an example operation for analyzingresponses to incoming communications, in accordance with one or moreaspects of the present disclosure. For purposes of illustration only,the example operations of FIG. 5 are described below within the contextof FIGS. 1 and 2.

Response suggestion system 14 receives one or more message historiesform one or more computing devices 2 (100). Each message history mayinclude one or more of a simple messaging service message history,multimedia messaging service message history, an instant messagingmessage history, or an email message history.

Response suggestion system 14 determines, based on the messagehistories, a plurality of message and response pairs (102). For example,for each message, aggregation module 52 may determine a message (e.g.,message N) that immediately precedes another message (e.g., message M)in the message history. Aggregation module 52 may analyze the sendersfor message N and message M. If the senders of message N and M aredifferent, aggregation module 52 determines that messages N and M for amessage and response pair (102).

Aggregation module 52 may further normalize each message from theplurality of message and response pairs (104). In normalizing thecontent, aggregation module 52 may change the contents of the messages Nand M to be consistent cases (e.g., all lowercase, all uppercase, etc.),may remove all punctuation, correct any misspellings, etc.

Aggregation module 52 may aggregate the responses for each message basedon the contents of the responses (106). As one example, for a particularmessage, aggregation module 52 may identify responses having the samenormalized contents (e.g., two responses having the contents “6 pm”would be identified as having the same normalized contents). That is,aggregation module 52 may aggregate, based on a respective informationtype for each response from the one or more aggregated message andresponse pairs, the one or more aggregated message and response pairsinto one or more consolidated message and response pairs.

In some examples, while aggregating the responses, aggregation module 52may count the number of responses having the same normalized responsesfor a particular message (108). In other words, aggregation module 52 ofresponse suggestion system 14 may determine a number of instances ofeach response for each message from the plurality of message andresponse.

Categorization module 54 of response suggestion system 14 may classifyeach response from the plurality of message and response pairs as havingan information type (110). That is, categorization module 54 may applyone or more classifiers to the responses in the message and responsetable to classify the responses as having an information type. Exampleclassifiers include, but are not limited to, an address classifier, achain store classifier, an emoji classifier, a celebrity classifier, adate classifier, a day of week classifier, a time classifier, etc.Categorization module 54 may then invoke aggregation module 52 tofurther aggregation the responses based on the information type for eachnormalized response. In various instances, aggregation module 52 mayalso determine, based on the number of instances of each response, arespective consolidated number of instances of the respectiveinformation type for each of the one or more consolidated message andresponse pairs.

Aggregation module 52 may store an indication of each unique messagefrom the plurality of message and response pairs, an indication of theinformation type associated with the respective response associated withthe unique message, and a number of responses from the plurality ofmessage and response pairs having the information type within responsedata store 50 (112). In some examples, aggregation module 52 furtherstores a respective indication of each of the one or more consolidatedmessage and response pairs, a respective information type, and arespective consolidated number of instances of the respectiveinformation type.

FIG. 5 is a flow diagram illustrating example operations for providingcandidate responses to an incoming communication, in accordance with oneor more aspects of the present disclosure. For purposes of illustrationonly, the example operations of FIG. 5 are described below within thecontext of FIGS. 1 and 2.

Computing device 2A may receive an incoming communication from anothercomputing device (e.g., computing device 2N) (200). The incomingcommunication includes information, is associated with a sender and arecipient. Responsive to receiving the incoming communication, computingdevice 2A may send a request for candidate responses to responsesuggestion system 14 (202).

Suggestion module 18 of response suggestion system 14 may be operable byprocessors 40 to receive a request for candidate responses, obtaininformation from one or more other sources, and/or determine a currentcontext for the request. Suggestion module 18 analyzes the request forcandidate responses and determines one or more popular response typesbased on the contents of the incoming communication (204). Response typeprediction module 56 of suggestion module 18 may determine which typesof responses are popular for responding to a message with the contentsof the incoming communication. For example, response type predictionmodule 56 may perform a lookup in response data store 50 based on atleast a portion of the contents of the incoming communication toretrieve information on one or more popular types of responses. Thelookup performed by response type prediction module 56 on response datastore 50 returns each type of response that satisfies a thresholdpopularity value.

Response generation module 58 may generate a plurality of possibleresponses to send to computing device 2A by, for example, retrievingpopular responses having one or more of the types determined by responsetype prediction module 56 (206). For example, if the incomingcommunication includes the contents “what time do you want to meet?”,the popular responses of response type TIME may include 8 am, 5 pm, and7 pm. In other words, response generation module may determine, based atleast in part on the plurality of popular responses and the type ofinformation expected to be included in the response, one or morecandidate responses. In some examples, the one or more candidateresponses are determined based on the identity of the sender of theincoming communication and the identity of the recipient of the incomingcommunication. In some examples, the one or more candidate responses aredetermined based on a communication type of the incoming communication(e.g., email, simple messaging service, synchronous communication etc.).

Response suggestion system 14 sends an indication of the one or morecandidate responses to computing device 2A (208). Computing device 2Areceives the indication of the one or more candidate responses anddisplays information about at least one of the one or more candidateresponses (210). Computing device 2A may be configured to display thecandidate responses differently based on the type of informationincluded in the candidate response. For example, if the candidateresponse includes information of type TIME, computing device 2A maydisplay the most popular candidate response in a time picker userinterface. As another example, if the candidate response includesinformation of type EMOJI, computing device 2A may display the candidateresponses in an emoji picker user interface.

EXAMPLE 1

A method comprising: receiving, by a computing system, a plurality ofmessage histories, wherein each message history from the plurality ofmessage histories includes one or more of a simple messaging servicemessage history, multimedia messaging service message history, aninstant messaging message history, or an email message history;determining, by the computing system and based on the plurality ofmessage histories, a plurality of message and response pairs;determining, by the computing system, a number of instances of eachresponse for each message from the plurality of message and responsepairs; classifying, by the computing system, each response from theplurality of message and response pairs as having an information type;and storing, by the computing system, an indication of each uniquemessage from the plurality of message and response pairs, an indicationof the information type associated with the respective responseassociated with the unique message, and a number of responses from theplurality of message and response pairs having the information type.

EXAMPLE 2

The method of example 1, further comprising: receiving, by the computingsystem and from a computing device, a request for a suggested responseto an incoming communication, the request including an indication of theincoming communication; determining, by the computing system and basedon the request, a type of information expected to be included in aresponse to the incoming communication; determining, by the computingsystem, and based on the request and the type of information, one ormore candidate responses; and sending, by the computing system and tothe computing device, an indication of the one or more candidateresponses.

EXAMPLE 3

The method of example 2, wherein the request for the suggested responseto the incoming communication includes an identity of a sender of theincoming communication and an identity of the recipient of the incomingcommunication, and where the one or more candidate responses aredetermined based on the identity of the sender and the identity of therecipient.

EXAMPLE 4

The method of any of examples 2 and 3, wherein the request for thesuggested response to the incoming communication includes acommunication type of the incoming communication, and wherein the one ormore candidate responses are determined based on the communication typeof the incoming communication.

EXAMPLE 5

The method of any of examples 2-4, wherein the request for the suggestedresponse to the incoming communication includes a device type of thecomputing device, and wherein the one or more candidate responses aredetermined based on the device type of the computing device.

EXAMPLE 6

The method of any of examples 1-5, further comprising: normalizing, bythe computing system, each message from the plurality of message andresponse pairs; aggregating, by the computing system and based on thenormalized messages, the plurality of message and response pairs intoone or more aggregated message and response pairs; and determining, bythe computing system, a number of instances of each response forrespective normalized messages from the aggregated message and responsepairs, wherein classifying each response from the plurality of messageand response pairs comprises classifying, by the computing system, eachresponse from the one or more aggregated message and response pairs ashaving the information type.

EXAMPLE 7

The method of example 6, further comprising: aggregating, by thecomputing system and based on a respective information type for eachresponse from the one or more aggregated message and response pairs, theone or more aggregated message and response pairs into one or moreconsolidated message and response pairs; and determining, by thecomputing system and based on the number of instances of each response,a respective consolidated number of instances of the respectiveinformation type for each of the one or more consolidated message andresponse pairs, wherein storing the indication of each unique messagefrom the plurality of message and response pairs includes storing, bythe computing system, a respective indication of each of the one or moreconsolidated message and response pairs, a respective information type,and a respective consolidated number of instances of the respectiveinformation type.

EXAMPLE 8

A computing system, comprising: at least one communication unitconfigured to receive a plurality of message histories, wherein eachmessage history from the plurality of message histories includes one ormore of a simple messaging service message history, multimedia messagingservice message history, an instant messaging message history, or anemail message history; a storage device; at least one processor; and atleast one module, operable by the at least one processor to: determine,based on the plurality of message histories, a plurality of message andresponse pairs; determine a number of instances of each response foreach message from the plurality of message and response pairs; classifyeach response from the plurality of message and response pairs as havingan information type; and store, at the storage device, an indication ofeach unique message from the plurality of message and response pairs, anindication of the information type associated with the respectiveresponse associated with the unique message, and a number of responsesfrom the plurality of message and response pairs having the informationtype.

EXAMPLE 9

The computing system of example 8, wherein the at least one module isfurther operable by the at least one processor to: receive, via the atleast one communication unit and from a computing device, a request fora suggested response to an incoming communication, the request includingan indication of the incoming communication; determine, based on therequest, a type of information expected to be included in a response tothe incoming communication; determine, based on the request and the typeof information, one or more candidate responses; and send, via the atleast one communication unit and to the computing device, an indicationof the one or more candidate responses.

EXAMPLE 10

The computing system of example 9, wherein the request for the suggestedresponse to the incoming communication includes an identity of a senderof the incoming communication and an identity of the recipient of theincoming communication, and wherein the one or more candidate responsesare determined based on the identity of the sender and the identity ofthe recipient.

EXAMPLE 11

The computing system of any of examples 9 and 10, wherein the requestfor the suggested response to the incoming communication includes acommunication type of the incoming communication, and wherein the one ormore candidate responses are determined based on the communication typeof the incoming communication.

EXAMPLE 12

The computing system of any of examples 9-11, wherein the request forthe suggested response to the incoming communication includes a devicetype of the computing device, and wherein the one or more candidateresponses are determined based on the device type of the computingdevice.

EXAMPLE 13

The computing system of any of examples 8-12, wherein the at least onemodule is further operable by the at least one processor to: normalizeeach message from the plurality of message and response pairs;aggregate, based on the normalized messages, the plurality of messageand response pairs into one or more aggregated message and responsepairs; determine a number of instances of each response for respectivenormalized messages from the aggregated message and response pairs; andclassify each response from the plurality of message and response pairsby at least classifying each response from the one or more aggregatedmessage and response pairs as having the information type.

EXAMPLE 14

The computing system of example 13, wherein the at least one module isfurther operable by the at least one processor to: aggregate, based on arespective information type for each response from the one or moreaggregated message and response pairs, the one or more aggregatedmessage and response pairs into one or more consolidated message andresponse pairs; determine, based on the number of instances of eachresponse, a respective consolidated number of instances of therespective information type for each of the one or more consolidatedmessage and response pairs; and store the indication of each uniquemessage from the plurality of message and response pairs by at leaststoring a respective indication of each of the one or more consolidatedmessage and response pairs, a respective information type, and arespective consolidated number of instances of the respectiveinformation type.

EXAMPLE 15

A non-transitory computer-readable storage medium encoded withinstructions that, when executed, cause at least one processor of acomputing system to: receive a plurality of message histories, whereineach message history from the plurality of message histories includesone or more of a simple messaging service message history, multimediamessaging service message history, an instant messaging message history,or an email message history; determine, based on the plurality ofmessage histories, a plurality of message and response pairs; determinea number of instances of each response for each message from theplurality of message and response pairs; classify each response from theplurality of message and response pairs as having an information type;and store an indication of each unique message from the plurality ofmessage and response pairs, an indication of the information typeassociated with the respective response associated with the uniquemessage, and a number of responses from the plurality of message andresponse pairs having the information type.

EXAMPLE 16

The non-transitory computer-readable storage medium of example 15,wherein the instructions further cause the one or more processors to:receive, from a computing device, a request for a suggested response toan incoming communication, the request including an indication of theincoming communication; determine, based on the request, a type ofinformation expected to be included in a response to the incomingcommunication; determine, based on the request and the type ofinformation, one or more candidate responses; and send, to the computingdevice, an indication of the one or more candidate responses.

EXAMPLE 17

The non-transitory computer-readable storage medium of example 16,wherein the request for the suggested response to the incomingcommunication includes an identity of a sender of the incomingcommunication and an identity of the recipient of the incomingcommunication, and wherein the one or more candidate responses aredetermined based on the identity of the sender and the identity of therecipient.

EXAMPLE 18

The non-transitory computer-readable storage medium of any of examples16 and 17 wherein the request for the suggested response to the incomingcommunication includes a communication type of the incomingcommunication, and wherein the one or more candidate responses aredetermined based on the communication type of the incomingcommunication.

EXAMPLE 19

The non-transitory computer-readable storage medium of any of examples15-18, wherein the instructions further cause the one or more processorsto: normalize each message from the plurality of message and responsepairs; aggregate, based on the normalized messages, the plurality ofmessage and response pairs into one or more aggregated message andresponse pairs; determine a number of instances of each response forrespective normalized messages from the aggregated message and responsepairs; and classify each response from the plurality of message andresponse pairs by at least classifying each response from the one ormore aggregated message and response pairs as having the informationtype.

EXAMPLE 20

The non-transitory computer-readable storage medium of example 19,wherein the instructions further cause the one or more processors to:aggregate, based on a respective information type for each response fromthe one or more aggregated message and response pairs, the one or moreaggregated message and response pairs into one or more consolidatedmessage and response pairs; determine, based on the number of instancesof each response, a respective consolidated number of instances of therespective information type for each of the one or more consolidatedmessage and response pairs; and store the indication of each uniquemessage from the plurality of message and response pairs by at leaststoring a respective indication of each of the one or more consolidatedmessage and response pairs, a respective information type, and arespective consolidated number of instances of the respectiveinformation type.

EXAMPLE 21

A computing system comprising means for performing the method recited byany of examples 1-8.

EXAMPLE 22

A computer-readable storage medium comprising instructions that, whenexecuted, cause one or more processors of a computing device to performthe method recited by any of examples 1-8.

In one or more examples, the functions described may be implemented inhardware, software, firmware, or any combination thereof If implementedin software, the functions may be stored on or transmitted over, as oneor more instructions or code, a computer-readable medium and executed bya hardware-based processing unit. Computer-readable media may includecomputer-readable storage media, which corresponds to a tangible mediumsuch as data storage media, or communication media including any mediumthat facilitates transfer of a computer program from one place toanother, e.g., according to a communication protocol. In this manner,computer-readable media generally may correspond to (1) tangiblecomputer-readable storage media, which is non-transitory or (2) acommunication medium such as a signal or carrier wave. Data storagemedia may be any available media that can be accessed by one or morecomputers or one or more processors to retrieve instructions, codeand/or data structures for implementation of the techniques described inthis disclosure. A computer program product may include acomputer-readable medium.

By way of example, and not limitation, such computer-readable storagemedia can comprise RAM, ROM, EEPROM, CD-ROM or other optical diskstorage, magnetic disk storage, or other magnetic storage devices, flashmemory, or any other medium that can be used to store desired programcode in the form of instructions or data structures and that can beaccessed by a computer. Also, any connection is properly termed acomputer-readable medium. For example, if instructions are transmittedfrom a website, server, or other remote source using a coaxial cable,fiber optic cable, twisted pair, digital subscriber line (DSL), orwireless technologies such as infrared, radio, and microwave, then thecoaxial cable, fiber optic cable, twisted pair, DSL, or wirelesstechnologies such as infrared, radio, and microwave are included in thedefinition of medium. It should be understood, however, thatcomputer-readable storage media and data storage media do not includeconnections, carrier waves, signals, or other transient media, but areinstead directed to non-transient, tangible storage media. Disk anddisc, as used herein, includes compact disc (CD), laser disc, opticaldisc, digital versatile disc (DVD), floppy disk and Blu-ray disc, wheredisks usually reproduce data magnetically, while discs reproduce dataoptically with lasers. Combinations of the above should also be includedwithin the scope of computer-readable media.

Instructions may be executed by one or more processors, such as one ormore digital signal processors (DSPs), general purpose microprocessors,application specific integrated circuits (ASICs), field programmablelogic arrays (FPGAs), or other equivalent integrated or discrete logiccircuitry. Accordingly, the term “processor,” as used herein may referto any of the foregoing structure or any other structure suitable forimplementation of the techniques described herein. In addition, in someaspects, the functionality described herein may be provided withindedicated hardware and/or software modules. Also, the techniques couldbe fully implemented in one or more circuits or logic elements.

The techniques of this disclosure may be implemented in a wide varietyof devices or apparatuses, including a wireless handset, an integratedcircuit (IC) or a set of ICs (e.g., a chip set). Various components,modules, or units are described in this disclosure to emphasizefunctional aspects of devices configured to perform the disclosedtechniques, but do not necessarily require realization by differenthardware units. Rather, as described above, various units may becombined in a hardware unit or provided by a collection ofinteroperative hardware units, including one or more processors asdescribed above, in conjunction with suitable software and/or firmware.

Various examples have been described. These and other examples arewithin the scope of the following claims.

1. A method comprising: determining, by a computing device and based ona plurality of message histories, a plurality of message and responsepairs, wherein each message history from the plurality of messagehistories includes one or more of a simple messaging service messagehistory, multimedia messaging service message history, an instantmessaging message history, or an email message history; determining, bythe computing device, a number of instances of each response for eachmessage from the plurality of message and response pairs; classifying,by the computing device, each response from the plurality of message andresponse pairs as having an information type from a plurality ofinformation types; and storing, by the computing device, an indicationof each unique message from the plurality of message and response pairs,an indication of the information type associated with the respectiveresponse associated with the unique message, and a number of responsesfrom the plurality of message and response pairs having the informationtype.
 2. The method of claim 1, further comprising: receiving, by thecomputing device an incoming communication; determining, by thecomputing device and based on content of the incoming communication, atype of information expected to be included in a response to theincoming communication; determining, by the computing device, and basedon the content of the incoming communication and the type ofinformation, one or more candidate responses; and displaying, by thecomputing device, an indication of the one or more candidate responses.3. The method of claim 2, wherein determining the one or more candidateresponses comprises determining, based on the content of thecommunication, the type of information, an identity of a sender of theincoming communication, and an identity of a recipient of the incomingcommunication, the one or more candidate responses.
 4. The method ofclaim 2, wherein determining the one or more candidate responsescomprises determining, based on the content of the incomingcommunication, the type of information, and a communication type of theincoming communication, the one or more candidate responses.
 5. Themethod of claim 2, wherein determining the one or more candidateresponses comprises determining, based on the content of the incomingcommunication, the type of information, and a device type of thecomputing device, the one or more candidate responses.
 6. The method ofclaim 1, further comprising: normalizing, by the computing device, eachmessage from the plurality of message and response pairs; aggregating,by the computing device and based on the normalized messages, theplurality of message and response pairs into one or more aggregatedmessage and response pairs; and determining, by the computing device, anumber of instances of each response for respective normalized messagesfrom the aggregated message and response pairs, wherein classifying eachresponse from the plurality of message and response pairs comprisesclassifying, by the computing device, each response from the one or moreaggregated message and response pairs as having the information typefrom the plurality of information types.
 7. The method of claim 6,further comprising: aggregating, by the computing device and based on arespective information type for each response from the one or moreaggregated message and response pairs, the one or more aggregatedmessage and response pairs into one or more consolidated message andresponse pairs; and determining, by the computing device and based onthe number of instances of each response, a respective consolidatednumber of instances of the respective information type for each of theone or more consolidated message and response pairs, wherein storing theindication of each unique message from the plurality of message andresponse pairs includes storing, by the computing device, a respectiveindication of each of the one or more consolidated message and responsepairs, a respective information type, and a respective consolidatednumber of instances of the respective information type.
 8. A computingdevice, comprising: a storage device that stores at least one module; atleast one processor, wherein the at least one module is executable bythe at least one processor to: determine, based on a plurality ofmessage histories, a plurality of message and response pairs, whereineach message history from the plurality of message histories includesone or more of a simple messaging service message history, multimediamessaging service message history, an instant messaging message history,or an email message history; determine a number of instances of eachresponse for each message from the plurality of message and responsepairs; classify each response from the plurality of message and responsepairs as having an information type from a plurality of informationtypes; and store, at the storage device, an indication of each uniquemessage from the plurality of message and response pairs, an indicationof the information type associated with the respective responseassociated with the unique message, and a number of responses from theplurality of message and response pairs having the information type. 9.The computing device of claim 8, further comprising: at least onecommunication unit; and a display component, wherein the at least onemodule is further executable by the at least one processor to: receive,via the at least one communication unit, an incoming communication;determine, based on the content of the incoming communication and thetype of information, one or more candidate responses; and output, fordisplay by the display component, an indication of the one or morecandidate responses.
 10. The computing device of claim 9, wherein theone or more modules are executable by the processor to determine the oneor more candidate responses further based on an identity of a sender ofthe incoming communication and an identity of a recipient of theincoming communication.
 11. The computing device of claim 9, wherein theone or more modules are executable by the processor to determine the oneor more candidate responses further based on a communication type of theincoming communication.
 12. The computing device of claim 9, wherein theone or more modules are executable by the processor to determine the oneor more candidate responses further based on a device type of thecomputing device.
 13. The computing device of claim 8, wherein the atleast one module is further executable by the at least one processor to:normalize each message from the plurality of message and response pairs;aggregate, based on the normalized messages, the plurality of messageand response pairs into one or more aggregated message and responsepairs; determine a number of instances of each response for respectivenormalized messages from the aggregated message and response pairs; andclassify each response from the plurality of message and response pairsby at least classifying each response from the one or more aggregatedmessage and response pairs as having the information type from theplurality of information types.
 14. The computing device of claim 13,wherein the at least one module is further executable by the at leastone processor to: aggregate, based on a respective information type foreach response from the one or more aggregated message and responsepairs, the one or more aggregated message and response pairs into one ormore consolidated message and response pairs; determine, based on thenumber of instances of each response, a respective consolidated numberof instances of the respective information type for each of the one ormore consolidated message and response pairs; and store the indicationof each unique message from the plurality of message and response pairsby at least storing a respective indication of each of the one or moreconsolidated message and response pairs, a respective information type,and a respective consolidated number of instances of the respectiveinformation type.
 15. A non-transitory computer-readable storage mediumencoded with instructions that, when executed, cause at least oneprocessor of a computing device to: determine, based on a plurality ofmessage histories, a plurality of message and response pairs, whereineach message history from the plurality of message histories includesone or more of a simple messaging service message history, multimediamessaging service message history, an instant messaging message history,or an email message history; determine a number of instances of eachresponse for each message from the plurality of message and responsepairs; classify each response from the plurality of message and responsepairs as having an information type from a plurality of informationtypes; and store an indication of each unique message from the pluralityof message and response pairs, an indication of the information typeassociated with the respective response associated with the uniquemessage, and a number of responses from the plurality of message andresponse pairs having the information type.
 16. The non-transitorycomputer-readable storage medium of claim 15, wherein the instructionsfurther cause the one or more processors to: receive an incomingcommunication; determine, based on the request, a type of informationexpected to be included in a response to the incoming communication;determine, based on the content of the incoming communication and thetype of information, one or more candidate responses; and output, fordisplay by a display component of the computing device, an indication ofthe one or more candidate responses.
 17. The non-transitorycomputer-readable storage medium of claim 16, wherein the instructionsfurther cause the one or more processors to determine the one or morecandidate responses further based on an identity of a sender of theincoming communication and an identity of a recipient of the incomingcommunication.
 18. The non-transitory computer-readable storage mediumof claim 16, wherein the instructions further cause the one or moreprocessors to determine the one or more candidate responses furtherbased on a communication type of the incoming communication.
 19. Thenon-transitory computer-readable storage medium of claim 15, wherein theinstructions further cause the one or more processors to: normalize eachmessage from the plurality of message and response pairs; aggregate,based on the normalized messages, the plurality of message and responsepairs into one or more aggregated message and response pairs; determinea number of instances of each response for respective normalizedmessages from the aggregated message and response pairs; and classifyeach response from the plurality of message and response pairs by atleast classifying each response from the one or more aggregated messageand response pairs as having the information type.
 20. Thenon-transitory computer-readable storage medium of claim 19, wherein theinstructions further cause the one or more processors to: aggregate,based on a respective information type for each response from the one ormore aggregated message and response pairs, the one or more aggregatedmessage and response pairs into one or more consolidated message andresponse pairs; determine, based on the number of instances of eachresponse, a respective consolidated number of instances of therespective information type for each of the one or more consolidatedmessage and response pairs; and store the indication of each uniquemessage from the plurality of message and response pairs by at leaststoring a respective indication of each of the one or more consolidatedmessage and response pairs, a respective information type, and arespective consolidated number of instances of the respectiveinformation type.